#include "Informacion.h"

Informacion::Informacion(int tamanioClave, int tamanioId)
{
	this->tamanioClave=tamanioClave;
	this->tamanioID=tamanioId;
	info=NULL;
}


void Informacion::Cargar(FILE *fuente)
{
	if(info)
		free(info);
	info= (char*) malloc(tamanioClave+tamanioID);
	fread ( info, 1, tamanioClave+tamanioID, fuente );
}



int Informacion::Comparar(Clave *DatoAComparar)
{
	return - DatoAComparar->Comparar(this);
}



int Informacion::Comparar(Informacion *datoAComparar)
{
	return memcmp(this->info, datoAComparar->info, tamanioClave+tamanioID);
}



char *Informacion::GetPrimaryKey()
{
	char* aux= (char*)malloc(tamanioID);
	memset(aux,0,tamanioID);

	memcpy(aux,(char*)info+tamanioClave,tamanioID);

	return aux;
}

unsigned int Informacion::GetID()
{
	unsigned int* aux= (unsigned int*)malloc(4);
	memset(aux,0,tamanioID);

	memcpy(aux,(char*)info+tamanioClave,tamanioID);

	return *aux;
}

Informacion::~Informacion()
{
	if(info)
		free(info);
}



void Informacion::Guardar(FILE *destino)
{
	fwrite ( info, 1, tamanioClave+tamanioID, destino );
}



void Informacion::Cargar(char *info)
{
	if(this->info)
		free(this->info);
	this->info=info;
}



Clave *Informacion::GetClave()
{
	Clave *clave= new Clave(tamanioClave);
	char* aux= (char*) malloc(tamanioClave);
	memcpy(aux, info, tamanioClave);
	clave->Cargar(aux);
	return clave;
}



